package com.songlanyun.modules.sharebenefitconfig.model;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.songlanyun.common.drive.ValueObject;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.*;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * 绿马公益联盟合伙人准入政策及服务积分收益明细表
 *
 * @author wuchao
 * @email songlanyun@gmail.com
 * @date 2022-08-16 14:01:48
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class PartnerConfig extends IShareBenefitConfig {

    private List<CommonwealPartnerConfig> list;

    @Data
    public static class CommonwealPartnerConfig implements ValueObject, Serializable {
        {
            entryDonationAmount = BigDecimal.ZERO;
            entryEarlyStage = BigDecimal.ZERO;
            serviceSystemFirstBatch = 0;
            serviceSystemContinue = 0;
            serviceSystemPossession = 0;
            shoppingDistributionAtl = 0;
            shoppingDistributionPossession = 0;
            saleProceedsProportion = 0;
            saleProceedsGrossMargin = 0;
        }

        /**
         * 资格
         * 0：公益会员
         * 1：公益创客
         * 2：公益联盟爱心小屋
         * 3：公益联盟服务驿站
         * 4：公益联盟服务中心
         * 5：公益联盟市级
         * 6：公益联盟省级公司
         * 7：公益联盟大区公司
         */
        @NotNull(message = "资格不能为空")
        @Range(min = 0, max = 7, message = "资格不在范围内")
        private Integer qualification;
        /**
         * 捐赠金额（准入条件）
         */
        @NotNull(message = "准入条件捐赠金额不能为空")
        @DecimalMax(value = "999999999.99", message = "准入条件捐赠金额最大为999999999.99")
        private BigDecimal entryDonationAmount;
        /**
         * 初创期（准入条件）
         */
        @NotNull(message = "准入条件初创期不能为空")
        @DecimalMax(value = "999999999.99", message = "准入条件初创期最大为999999999.99")
        private BigDecimal entryEarlyStage;
        /**
         * 首批（公益推广服务积分收益（服务体系））
         */
        @NotNull(message = "公益推广服务积分收益（服务体系）首批不能为空")
        @Max(value = 100, message = "公益推广服务积分收益（服务体系）首批最大为100")
        private Integer serviceSystemFirstBatch;
        /**
         * 持续（批发）（公益推广服务积分收益（服务体系））
         */
        @NotNull(message = "公益推广服务积分收益（服务体系）持续（批发）不能为空")
        @Max(value = 100, message = "公益推广服务积分收益（服务体系）持续（批发）最大为100")
        private Integer serviceSystemContinue;
        /**
         * 属地（公益推广服务积分收益（服务体系））
         */
        @NotNull(message = "公益推广服务积分收益（服务体系）属地不能为空")
        @Max(value = 100, message = "公益推广服务积分收益（服务体系）属地最大为100")
        private Integer serviceSystemPossession;
        /**
         * 线上（服务积分收益（购物分销））
         */
        @NotNull(message = "服务积分收益（购物分销）线上不能为空")
        @Max(value = 100, message = "服务积分收益（购物分销）线上最大为100")
        private Integer shoppingDistributionAtl;
        /**
         * 属地（服务积分收益（购物分销））
         */
        @NotNull(message = "服务积分收益（购物分销）属地不能为空")
        @Max(value = 100, message = "服务积分收益（购物分销）属地最大为100")
        private Integer shoppingDistributionPossession;
        /**
         * 比例（线下集采义卖收益）
         */
        @NotNull(message = "线下集采义卖收益比例不能为空")
        @Max(value = 100, message = "线下集采义卖收益比例最大为100")
        private Integer saleProceedsProportion;
        /**
         * 毛利（线下集采义卖收益）
         */
        @NotNull(message = "线下集采义卖收益毛利不能为空")
        @Max(value = 100, message = "线下集采义卖收益毛利最大为100")
        private Integer saleProceedsGrossMargin;

    }

}
